home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE23 / TIPTRIX / LISTING2.PAS < prev   
Pascal/Delphi Source File  |  1997-06-17  |  1KB  |  60 lines

  1. LOCBUG.DPR:
  2. program LocBug;
  3. uses
  4.   LocBugA;
  5. begin
  6. end.
  7.  
  8. LOCBUGA.PAS:
  9. unit LocBugA;
  10. interface
  11. {$HINTS OFF} {$WARNINGS OFF} {$ALIGN OFF}
  12. type
  13.   TObjectA = class
  14.   private
  15.     UnusedA: integer;  // Should not get hint, and we don't
  16.   public
  17.     procedure Destroy; // Should not get warning, and we don't
  18.   end;
  19.   TRecA = record // SizeOf(TRecA) should be 5, and it is
  20.     A: char;
  21.     L: longint;
  22.   end;
  23. implementation
  24. uses
  25.   LocBugB;
  26. {.$HINTS OFF}      // Remove dots to work around the buggy behavior
  27. {.$WARNINGS OFF}
  28. type
  29.   TObjectB = class
  30.   private
  31.     UnusedB: integer;  // Should not get hint, but we do in D3
  32. (sometimes)
  33.   public
  34.     procedure Destroy; // Should not get warning, but we do
  35. (sometimes)
  36.   end;
  37.   {.$ALIGN ON} // If you remove the dot, you will get an invalid
  38. typecast below
  39.   TRecB = record // SizeOf(TRecA) should be 5, and it is
  40.     A: char;
  41.     L: longint;
  42.   end;
  43. procedure TObjectA.Destroy; begin end;
  44. procedure TObjectB.Destroy;
  45. var
  46.   A: TRecA;
  47. begin
  48.   TRecB(A).L := 123; // This is Ok because SizeOf(TRecA) =
  49. SizeOf(TRecB)
  50. end;
  51. end.
  52.  
  53. LOCBUGB.PAS:
  54. unit LocBugB;
  55. interface
  56. implementation
  57. {$HINTS ON} {$WARNINGS ON} {$ALIGN ON}
  58. end.
  59.  
  60.